\ProvidesPackage{mybeamercommand}
\RequirePackage{xparse,myoldbeamercommand,fp}
%为当前subsection生成一个frame,其标题为当前subsection标题
% \outframeforsubsection[<options>]{<contents>}
% <options>与frame环境的options参数一样
\NewDocumentCommand{\frameforsubsection}{om}{
  \IfNoValueTF{#1}
    {\outframeforcursubsection{#2}}
    {
    \begin{frame}[#1]{\outsubsectitle}
       #2
     \end{frame}
    }
}
%为当前section生成一个frame,其标题为当前section标题
% \outframeforsection[<options>]{<contents>}
% <options>与frame环境的options参数一样
\NewDocumentCommand\frameforsection{om}{
  \IfNoValueTF{#1}
    {\outframeforcursection{#2}}
    {
      \begin{frame}[#1]{\outsectitle}
      #2
      \end{frame}
    }
}
%\frameforcontents<*>[1]
%输出目录frame,带*,则标题为"目录",适用于只包含1个部分的PPT文档
%，不带*,则标题为“第x部分 标题”，适用于包含2个及以上部分的PPT文档
%可选参数[1],省略则显示完整目录，不省略则高亮显示当前目录
\NewDocumentCommand\frameforcontents{so}{
  \IfBooleanTF{#1}{
    \IfNoValueTF{#2}{\outcontentsframenopart}{
      \outcurcontentsframenopart
    }
  }{
    \IfNoValueTF{#2}{\outcontentsframe}{
      \outcurcontentsframe
    }
  }
}
%\twocolumnsframeforsection[<frame options>]{<left-contents>}[<left-column-ratio>]{<right-contents>}
%输出一张frame，其标题为当前section标题，该frame内容区域分为2列，第1列宽度占比为left-column-ratio(0到1之间)
%frame-options:可选项，其设置与frame环境的可选项一致
%left-contents,right-contents:必需项，左边列内容与右边列内容
%left-column-ratio:带默认值的可选项，左列宽度占比，默认值为0.5
%示例：
% \twocolumnsframeforsection[t]{左边内容}{右边内容}  
% \twocolumnsframeforsection{左边内容}[0.3]{右边内容}  
\NewDocumentCommand\twocolumnsframeforsection{omO{0.5}m}{
  \IfNoValueTF{#1}{
    \frameforsection{
      \outtowcolumns{#3}{#2}{#4}
    }
  }{
    \frameforsection[#1]{
      \outtowcolumns{#3}{#2}{#4}
    }
  }
}
%\twocolumnsframeforsubsection[<frame options>]{<left-contents>}[<left-column-ratio>]{<right-contents>}
%输出一张frame，其标题为当前subsection标题，该frame内容区域分为2列，第1列宽度占比为left-column-ratio(0到1之间)
%frame-options:可选项，其设置与frame环境的可选项一致
%left-contents,right-contents:必需项，左边列内容与右边列内容
%left-column-ratio:带默认值的可选项，左列宽度占比，默认值为0.5
%示例：
% \twocolumnsframeforsubsection[t]{左边内容}{右边内容}  
% \twocolumnsframeforsubsection{左边内容}[0.3]{右边内容}  
\NewDocumentCommand\twocolumnsframeforsubsection{omO{0.5}m}{
  \IfNoValueTF{#1}{
    \frameforsubsection{
      \outtowcolumns{#3}{#2}{#4}
    }
  }{
    \frameforsubsection[#1]{
      \outtowcolumns{#3}{#2}{#4}
    }
  }
}
%\frameforsummary[frametitle]{<contents>}
%输出用于小结的帧
%frametitle:可选参数，表示帧的标题，默认值为"第x部分 小结"，若给定参数，则覆盖默认参数
%contents:内容
\NewDocumentCommand\frameforsummary{om}{
  \IfNoValueTF{#1}{
    \begin{frame}{\outparttitle:小结}
      #2
    \end{frame}
  }{
    \begin{frame}{#1}
      #2
    \end{frame}
  }
}
%\inputsection[section-title]{section-tex-file}
%相当于
% \section{section-title}
% \input{section-tex-file}
% section-title：可选，若省略，则以section-tex-file文件名作为标题 
% section-tex-file:tex文件路径，该文件应置于主tex文件所在目录下，不要带tex扩展名
\NewDocumentCommand\inputsection{om}{
  \IfNoValueTF{#1}{%
    \section{#2}
  }{%
    \section{#1}
  }
  \input{#2.tex}
}
%\inputsubsection[subsection-title]{subsection-tex-file}
%相当于
% \subsection{subsection-title}
% \input{subsection-tex-file}
% subsection-title：可选，若省略，则以section-tex-file文件名作为标题 
% subsection-tex-file:tex文件路径，该文件应置于主tex文件所在目录下，不要带tex扩展名
\NewDocumentCommand\inputsubsection{om}{
  \IfNoValueTF{#1}{%
    \subsection{#2}
  }{%
    \subsection{#1}
  }
  \input{#2.tex}
}
\newcommand{\listbgcolor}{green!20}
\newcommand{\listboxcolor}{blue}
\newcommand{\listtextcolor}{blue}
%\titleforlist{title}
%为列表创建标题
%该标题单独一行，类似于文本框，其背景颜色、边框颜色、字体颜色依次
%可通过\listbgcolor,\listboxcolor,\listtextcolor设置或通过renewcommand进行相应修改
\NewDocumentCommand\titleforlist{m}{
  \fcolorbox{\listboxcolor}{\listbgcolor}{\textcolor{\listtextcolor}{#1}\newline}
}

\newcommand{\mylogo}{default.jpeg}
\newcommand\titlepageframe{
  \outtitlepageframe{\mylogo}
}

\newcommand{\frameforthanks}{
  \begin{frame}[plain]
    \begin{figure}
      \color{blue}
      \zihao{1}
      谢谢!\\
      Thank you!
    \end{figure}
  \end{frame}
}
%在空白页显示思维导图
\NewDocumentCommand{\frameformindmap}{m}{
  \begin{frame}[plain]
    \begin{figure}
      \includegraphics[width=.98\textwidth]{#1}
    \end{figure}
  \end{frame}
}
\NewDocumentCommand{\alertblue}{m}{
  {\color{blue} #1}
}
\NewDocumentCommand{\twocolumns}{O{.5}mmO{t}}{
  \FPeval\result{1-#1}
  \begin{columns}[#4]
    \column{#1\textwidth}
    #2
    \column{\result\textwidth}
    #3
  \end{columns}
}
\NewDocumentCommand{\step}{m}{
  \fcolorbox{blue}{green!50}{#1}
}
%\hangingindent[0.05]{内容}
%左悬挂缩进
\NewDocumentCommand{\hangingindent}{O{0.05}m}{
  \vspace{-2.9ex}
  \twocolumns[#1]{}{%
    #2
  }[t]
}
%\hanging[0.05]{内容}
%使内容左右悬挂缩进指定的宽度
%第1个可选参数：1个小数，表示缩进宽度与文本区宽度的比值，如0.05,相当于0.05\textwidth
\NewDocumentCommand{\hanging}{O{0.05}m}{
  \FPeval\result{1-2*#1}
  \begin{columns}[t]
    \column{#1\textwidth}
    \column{\result\textwidth}
    #2
    \column{#1\textwidth}
  \end{columns}
}

\NewDocumentCommand{\outfigure}{mmO{}}{
  \begin{figure}[h]
    \centering
    \includegraphics[width=#1\textwidth]{#2}\\
    #3
  \end{figure}
}
